/******************************************************************************
 * @File name   :      IMemberGiftService.java
 *
 * @Author      :      GUDONG
 *
 * @Date        :      2015年8月25日
 *
 * @Copyright Notice: 
 * Copyright (c) 2014 Capgemini, Inc. All  Rights Reserved.
 * This software is published under the terms of the Capgemini Software
 * License version 1.0, a copy of which has been included with this
 * distribution in the LICENSE.txt file.
 * 
 * 
 * ----------------------------------------------------------------------------
 * Date                   Who         Version        Comments
 * 2015年8月25日 下午5:51:26        GUDONG     1.0            Initial Version
 *****************************************************************************/
package com.cap.bts.crmdp.dealer.mars.service;

import java.util.List;

import com.cap.bts.crmdp.dealer.coupon.domain.Ticket;
import com.cap.bts.crmdp.dealer.packagegift.domain.MemberGiftInfo;
import com.cap.bts.crmdp.dealer.packagegift.dto.MermberGiftDto;
import com.cap.bts.crmdp.dealer.purchase.domain.PackageDefinition;
import com.cap.bts.crmdp.dealer.purchase.dto.MemberPackageInfoSubmitDto;
import com.cap.bts.framework.common.exception.AppException;
import com.cap.bts.framework.common.service.IBaseService;

/**
 *
 */
public interface IMarsMemberGiftService extends IBaseService {
    /**
     * getGiftByPackageDefId
     * 
     * @Date : 2015年8月25日
     * @param packageDefId
     * @return
     * @throws AppException
     */
    public List<MemberGiftInfo> getPackageGiftByPackageDefId(Long packageDefId) throws AppException;

    /**
     * getTicketGiftByPackageDefId
     * 
     * @Date : 2015年8月25日
     * @param packageDefId
     * @return
     * @throws AppException
     */
    public List<MemberGiftInfo> getTicketGiftByPackageDefId(Long packageDefId) throws AppException;

    /**
     * isFirstActivation
     * 
     * @Date : 2015年8月25日
     * @param dealerId
     * @param memberId
     * @return
     * @throws AppException
     */
    public Boolean isFirstActivation(Long dealerId, Long memberId) throws AppException;

    /**
     * @Date : 2015年8月26日
     * @param memberPackageInfoSubmitDto
     * @param memberGiftInfo
     * @throws AppException
     */
    public List<PackageDefinition> processPackageGiftAndPurchaseActivation(
        MemberPackageInfoSubmitDto memberPackageInfoSubmitDto, List<MemberGiftInfo> memberGiftInfo)
        throws AppException;

    /**
     * @Date : 2015年8月26日
     * @param memberPackageInfoSubmitDto
     * @param memberGiftInfo
     * @throws AppException
     */
    public List<Ticket> processTicketGiftAndPurchaseActivation(
        MemberPackageInfoSubmitDto memberPackageInfoSubmitDto, List<MemberGiftInfo> memberGiftInfo)
        throws AppException;

    /**
     * @Date : 2015年8月26日
     * @param memberPackageInfoSubmitDto
     * @param packageDefId
     * @param memberGiftInfo
     * @throws AppException
     */
    public List<PackageDefinition> processPackageGift(
        MemberPackageInfoSubmitDto memberPackageInfoSubmitDto) throws AppException;

    /**
     * @Date : 2015年8月26日
     * @param memberPackageInfoSubmitDto
     * @param packageDefId
     * @param memberGiftInfo
     * @throws AppException
     */
    public List<Ticket> processTicketGift(MemberPackageInfoSubmitDto memberPackageInfoSubmitDto)
        throws AppException;

    /**
     * @Date : 2015年8月26日
     * @param memberPackageInfoSubmitDto
     * @param packageDefId
     * @param memberGiftInfo
     * @throws AppException
     */
    public List<PackageDefinition> getPackageGiftListInfo(
        MemberPackageInfoSubmitDto memberPackageInfoSubmitDto) throws AppException;

    /**
     * @Date : 2015年8月26日
     * @param memberPackageInfoSubmitDto
     * @param packageDefId
     * @param memberGiftInfo
     * @throws AppException
     */
    public List<Ticket> getTicketGiftListInfo(MemberPackageInfoSubmitDto memberPackageInfoSubmitDto)
        throws AppException;

    /**
     * @Date : 2015年8月26日
     * @param memberPackageInfoSubmitDto
     * @param memberGiftInfo
     * @throws AppException
     */
    public List<PackageDefinition> getPackageGiftListDetailInfo(
        MemberPackageInfoSubmitDto memberPackageInfoSubmitDto, List<MemberGiftInfo> memberGiftInfo)
        throws AppException;

    /**
     * @Date : 2015年8月26日
     * @param memberPackageInfoSubmitDto
     * @param memberGiftInfo
     * @throws AppException
     */
    public List<Ticket> getTicketGiftListDetailInfo(
        MemberPackageInfoSubmitDto memberPackageInfoSubmitDto, List<MemberGiftInfo> memberGiftInfo)
        throws AppException;

    /**
     * 根据套餐ID、gift_type、gift_id查询入会礼信息
     * 
     * @param mermberGiftDto
     * @return
     * @throws AppException
     */
    public MemberGiftInfo getMermberGiftInfo(MermberGiftDto mermberGiftDto) throws AppException;

    public List<MemberGiftInfo> getGiftByPackageDefId(Long packageDefId) throws AppException;
}
